package dryven.model.di;

import java.lang.annotation.Annotation;
import java.lang.reflect.Method;

public interface DependencyService {

	public abstract <T> T constructObject(LocalThreadStorage storage, Class<T> type);

	public abstract Object invokeMethod(LocalThreadStorage storage, Method m, Object o,
			Object[] existingParameters);
	public abstract void injectDependencies(LocalThreadStorage storage, Object o);
	
	public Object getDependency(LocalThreadStorage storage, Class<?> type, Annotation[] annotations);
}